package com.happyrecyclingstation.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.time.LocalDate;
import java.util.List;

/**
 * 简历数据传输对象
 */
@Data
public class ResumeVO {
    private Integer id;                    // 简历ID
    private Integer userId;                // 用户ID
    private String name;                // 姓名
    private Integer gender;             // 性别（1-男，2-女）
    @JsonFormat(pattern = "yyyy/MM/dd")
    private LocalDate birthDate;           // 出生日期（格式：yyyy/MM/dd）
    private String phone;               // 手机号码
    private String email;               // 电子邮箱
    private String address;             // 联系地址
    private String jobIntention;       // 求职意向
    private String selfIntroduction;    // 自我介绍
    private String createTime;         // 创建时间
    private String updateTime;         // 更新时间
    private List<EducationDto> education;      // 教育背景列表
    private List<WorkExperienceDto> workExperience; // 工作经历列表
    private List<ProjectDto> projects;         // 项目经历列表
    private List<String> skills;               // 技能标签列表

    @Data
    public static class EducationDto {
        private String school;          // 学校名称
        private String startDate;       // 开始时间（格式：yyyy/MM）
        private String endDate;         // 结束时间（格式：yyyy/MM）
        private List<String> date;      // 时间区间（包含开始和结束时间）
        private String major;           // 专业名称
        private String degree;          // 学位
    }

    @Data
    public static class WorkExperienceDto {
        private String company;         // 公司名称
        private String startDate;      // 开始时间（格式：yyyy/MM）
        private String endDate;        // 结束时间（格式：yyyy/MM）
        private List<String> date;     // 时间区间（包含开始和结束时间）
        private String position;      // 职位名称
        private List<String> duties;   // 工作职责（列表形式）
        private String dutiesText;    // 工作职责（文本形式，用换行符分隔）
    }

    @Data
    public static class ProjectDto {
        private String name;           // 项目名称
        private String startDate;      // 开始时间（格式：yyyy/MM）
        private String endDate;        // 结束时间（格式：yyyy/MM）
        private List<String> date;     // 时间区间（包含开始和结束时间）
        private String description;   // 项目描述
        private List<String> responsibility; // 项目职责（列表形式）
        private String responsibilityText; // 项目职责（文本形式，用换行符分隔）
    }
}